//package org.an.proj.contacts.ui.base.webview;
//
//import android.content.ClipData;
//import android.content.ClipboardManager;
//import android.graphics.Bitmap;
//import android.support.annotation.CallSuper;
//import android.support.annotation.NonNull;
//import android.text.TextUtils;
//import android.webkit.JavascriptInterface;
//import android.webkit.WebView;
//import com.homelink.newlink.R;
//import com.homelink.newlink.config.BaseSharedPreferences;
//import com.homelink.newlink.config.Config;
//import com.homelink.newlink.model.bean.AgentInfoVo;
//import com.homelink.newlink.model.bean.CityCodeBean;
//import com.homelink.newlink.utils.DataUtil;
//import com.homelink.newlink.utils.LogUtil;
//import com.homelink.newlink.utils.Tools;
//import com.homelink.newlink.utils.UrlSchemeUtils;
//import com.lianjia.common.utils.base.NetworkUtil;
//import com.lianjia.common.utils.device.DeviceUtil;
//import com.lianjia.common.utils.system.SysUtil;
//import java.util.ArrayList;
//import java.util.List;
//import org.json.JSONArray;
//import org.json.JSONException;
//import org.json.JSONObject;
//
///**
// * 创建时间：2017年04月14日16:29 <br>
// * 作者：fuchaoyang <br>
// * 描述：
// */
//
//public abstract class BaseJsBridgeWebView extends BaseWebViewActivity {
//  /*分享实体类*/
//  private SharePublicEntity sharePublicEntity;
//
//  @CallSuper @Override protected void onRegisterJS() {
//
//  }
//
//  @Override protected void onPageStarted(WebView view, String url, Bitmap favicon) {
//    super.onPageStarted(view, url, favicon);
//    sharePublicEntity = null;
//  }
//
//  private void makeHybridBridge() {
//    com.homelink.newlink.ui.base.BaseWebViewActivity.StaticDataBean
//        staticDataBean = new com.homelink.newlink.ui.base.BaseWebViewActivity.StaticDataBean();
//    staticDataBean.deviceId = DeviceUtil.getDeviceID(this.getApplicationContext());
//    staticDataBean.appVersion = Config.VERSION_NAME;
//    staticDataBean.sysModel = SysUtil.getModel();
//    staticDataBean.sysVersion = SysUtil.getSysVersion(this.getApplicationContext());
//    if (NetworkUtil.isWifiConnected(this.getApplicationContext())) {
//      staticDataBean.network = "WIFI";
//    } else {
//      staticDataBean.network = "";
//    }
//    staticDataBean.scheme = SCHEME;
//    AgentInfoVo loginInfo = BaseSharedPreferences.getInstance().getLoginResultInfo();
//
//    if (loginInfo != null) {
//      // staticDataBean.accessToken = loginInfo.token;
//      if (BaseSharedPreferences.getInstance().getToken() != null) {
//        staticDataBean.accessToken = BaseSharedPreferences.getInstance().getToken();
//      }
//      staticDataBean.userInfo.phoneNumber = loginInfo.mobile;
//      staticDataBean.userInfo.nickName = loginInfo.name;
//      staticDataBean.userInfo.userName = loginInfo.name;
//      staticDataBean.userInfo.agentId = loginInfo.usercode;
//    }
//
//    CityCodeBean cityCode = BaseSharedPreferences.getInstance().getCityCode();
//    if (cityCode != null) {
//      String code = cityCode.code;
//      staticDataBean.extraData.cityId = code;
//      staticDataBean.extraData.cityName = cityCode.name;
//      staticDataBean.extraData.cityAbbr = Tools.getCityAbbr(Integer.parseInt(code));
//    }
//    mHybridBridgeLJ = new com.homelink.newlink.ui.base.BaseWebViewActivity.HybridBridgeLJ();
//    mHybridBridgeLJ._staticData = DataUtil.toJson(staticDataBean);
//  }
//
//  static class StaticDataBean {
//    public String deviceId;// 设备ID
//    public String sysModel;//手机型号
//    public String sysVersion;//系统版本号
//    public String appVersion; // 链家app当前版本
//    public String network; // 网络状态，取值：WIFI、''（空表示非wifi）
//    public String scheme; // "lianjia", // app scheme，用于打开app对应页面
//    public String accessToken; // 访问token，校验，已登录用户才有，可以用来判断用户是否登录
//    // 已登录时用户信息
//    public UserInfoBean userInfo;
//    // extraData为选填字段，里面包括自定义的一些参数，满足以后H5的特殊化需求
//    public ExtraDataBean extraData;
//
//    StaticDataBean() {
//      userInfo = new UserInfoBean();
//      extraData = new ExtraDataBean();
//    }
//
//    class UserInfoBean {
//      public String phoneNumber;
//      public String nickName;
//      public String userName;
//      public String agentId;
//      public String userId;
//    }
//
//    class ExtraDataBean {
//      public String cityId;
//      public String cityName;
//      public String cityAbbr; // 'bj'
//    }
//  }
//
//  public static class RightButtonBean {
//    public String name;
//    public String clickUrl;
//    public String imageUrl;
//  }
//
//  class HybridBridgeLJ {
//
//    public String _staticData;
//
//    @JavascriptInterface @SuppressWarnings("unused") public void notifyVideoEnd() {
//      // Must match Javascript interface method of VideoEnabledWebChromeClient
//      LogUtil.d(TAG, "notifyVideoEnd.");
//      /*runOnUiThread(new Runnable() {
//        public void run() {
//          if (mWebChromeClient != null) {
//            mWebChromeClient.onHideCustomView();
//          }
//        }
//      });*/
//    }
//
//    // java to js
//    @JavascriptInterface @SuppressWarnings("unused") public String _getStaticData() {
//      LogUtil.d(TAG, "_getStaticData:" + _staticData);
//      return _staticData;
//    }
//
//    @JavascriptInterface @SuppressWarnings("unused") public void setPageTitle(final String title) {
//      LogUtil.d(TAG, "setPageTitle >>> params=" + title);
//      runOnUiThread(new Runnable() {
//        public void run() {
//          setPageTitleInNative(title);
//        }
//      });
//    }
//
//    // 调用app登录，登录成功后打开url页面
//    @JavascriptInterface @SuppressWarnings("unused") public void actionLogin(final String url) {
//      LogUtil.d(TAG, "actionLogin");
//      runOnUiThread(new Runnable() {
//        public void run() {
//          actionLoginInNative(url);
//        }
//      });
//    }
//
//    // 在H5页面中跳转到app中的某些页面。参数表示跳转app页面的url。比如:
//    // HybridBridgeLJ.actionWithUrl('lianjia://index')，跳转到app首页
//    // HybridBridgeLJ.actionWithUrl('lianjia://user')，跳转到用户首页
//    @JavascriptInterface @SuppressWarnings("unused") public void actionWithUrl(final String url) {
//      LogUtil.d(TAG, "actionWithUrl >>> params=" + url);
//      runOnUiThread(new Runnable() {
//        public void run() {
//          actionWithUrlInNative(url);
//        }
//      });
//    }
//
//    /**
//     * 关闭：cancel
//     * 分享：share
//     * 聊天：chat
//     */
//    @Deprecated @JavascriptInterface @SuppressWarnings("unused") public void setRightButton(
//        final String params) {
//      LogUtil.e(TAG, "setRightButton params: " + params);
//      runOnUiThread(new Runnable() {
//        public void run() {
//          List<String> list = new ArrayList();
//          try {
//            JSONArray array = new JSONArray(params);
//            for (int i = 0; i < array.length(); i++) {
//              list.add(array.getString(i));
//            }
//            setRightButtonInNative(list);
//          } catch (JSONException e) {
//            e.printStackTrace();
//          }
//        }
//      });
//    }
//
//    /**
//     * 添加标题栏右侧按钮,支持按钮点击自定义行为
//     *
//     * @param jsonStr "[{
//     * "name":"share", //按钮名称
//     * "clickUrl":"lianjialink://xxx" //点击按钮后的行为
//     * "imageUrl": "http://xxx"  //按钮的图片地址
//     * }]"
//     */
//    @JavascriptInterface @SuppressWarnings("unused") public void setRightButton2(
//        final String jsonStr) {
//      LogUtil.e(TAG, "setRightButton2 params: " + jsonStr);
//      runOnUiThread(new Runnable() {
//        public void run() {
//          List<RightButtonBean> list = new ArrayList();
//          try {
//            JSONArray array = new JSONArray(jsonStr);
//            for (int i = 0; i < array.length(); i++) {
//              JSONObject obj = array.getJSONObject(i);
//              RightButtonBean bean = new RightButtonBean();
//              bean.name = obj.optString("name");
//              bean.clickUrl = obj.optString("clickUrl");
//              bean.imageUrl = obj.optString("imageUrl");
//              list.add(bean);
//            }
//          } catch (JSONException e) {
//            e.printStackTrace();
//          }
//          setRightButton2InNative(list);
//        }
//      });
//    }
//
//    // 当H5页面切换城市后通知到app用户当前跳转城市ID
//    @JavascriptInterface @SuppressWarnings("unused") public void setCity(final String cityId) {
//
//    }
//
//    // 复制字符串到剪切板
//    @JavascriptInterface @SuppressWarnings("unused") public void copyString(final String str) {
//      LogUtil.d(TAG, "copyString");
//      ClipboardManager cm = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
//      ClipData clipData =
//          ClipData.newPlainText(BaseWebViewActivity.class.getSimpleName() + "copyString", str);
//      cm.setPrimaryClip(clipData);
//      com.link.libbusiness.util.ToastUtil.toast(R.string.save_to_clipbroad_success);
//    }
//
//    // 设置分享内容
//        /*
//         * {articleTitle: tle,
//		 * requestUrl: location.href,
//		 * headImageUrl:
//		 * 'http://static2.ljcdn.com/m/images/weixin/news_cover.png'
//		 * }
//		 */
//
//    /**
//     * 优先使用clickUrl
//     */
//    @JavascriptInterface @SuppressWarnings("unused") public void setShareConfig(final String json) {
//      LogUtil.e(TAG, "setShareConfig params: " + json);
//      runOnUiThread(new Runnable() {
//        public void run() {
//          setShareConfigInNative(json);
//        }
//      });
//    }
//
//    // 调起app分享功能
//    @JavascriptInterface @SuppressWarnings("unused") @Deprecated public void actionShare() {
//      LogUtil.e(TAG, "actionShare");
//      runOnUiThread(new Runnable() {
//        public void run() {
//          actionShareInNative();
//        }
//      });
//    }
//
//    @JavascriptInterface @SuppressWarnings("unused")
//    public void actionShareWithString(final String shareJsonData) {
//      LogUtil.e(TAG, "actionShare");
//      runOnUiThread(new Runnable() {
//        public void run() {
//          actionShareInNative(shareJsonData);
//        }
//      });
//    }
//
//    // 调起app的toast提示框，统一app提示样式
//    @JavascriptInterface @SuppressWarnings("unused") public void actionToast(final String str) {
//      LogUtil.e(TAG, "actionToast >>> params=" + str);
//      runOnUiThread(new Runnable() {
//        public void run() {
//          actionToastInNative(str);
//        }
//      });
//    }
//
//    // 双向通信
//    @JavascriptInterface @SuppressWarnings("unused") public void callAndBack(final String json) {
//      LogUtil.e(TAG, "callAndBack >>> params=" + json);
//      runOnUiThread(new Runnable() {
//        public void run() {
//          try {
//            JSONObject obj = new JSONObject(json);
//            callAndBackInNative(obj.optString("actionUrl"), obj.optString("functionName"));
//          } catch (JSONException e) {
//            e.printStackTrace();
//          }
//        }
//      });
//    }
//
//    // 双向通信
//    @JavascriptInterface @SuppressWarnings("unused") public void closeWeb(final String msg) {
//      LogUtil.e(TAG, "closeWeb >>> params=" + msg);
//      runOnUiThread(new Runnable() {
//        public void run() {
//          closeWebInNative(msg);
//        }
//      });
//    }
//
//    // 非通用方法
//    // extraMethod: {
//    // setUsername: function(newName) {
//    // }?
//    // }
//  }
//
//  // ================================本地方法=============================================
//
//  /**
//   * 获取分享实体
//   * 关于分享优先走 clickUrl,没有再走这个，否则从webView取
//   *
//   * @return 分享实体
//   */
//  public SharePublicEntity getShareData() {
//    if (sharePublicEntity == null) {
//      String title = mWebView.getTitle();
//      String url = mWebView.getUrl();
//      sharePublicEntity = new SharePublicEntity(title, url, "", url);
//    }
//    return sharePublicEntity;
//  }
//
//  /**
//   * 设置分享数据
//   */
//  protected void setShareConfigInNative(String json) {
//    if (sharePublicEntity == null) {
//      sharePublicEntity = DataUtil.mGson.fromJson(json, SharePublicEntity.class);
//    }
//  }
//
//  /**
//   * 提示toast
//   */
//  protected void actionToastInNative(String str) {
//    //ToastUtil.toast(str);
//  }
//
//  /**
//   * 调起分享
//   */
//  protected void actionShareInNative() {
//    //UrlSchemeUtils.toShared(this, sharePublicEntity);
//  }
//
//  /**
//   * @param shareJsonData 分享的json数据
//   */
//  protected void actionShareInNative(String shareJsonData) {
//    if (!TextUtils.isEmpty(shareJsonData)) {
//      SharePublicEntity shareEntity =
//          DataUtil.mGson.fromJson(shareJsonData, SharePublicEntity.class);
//      if (shareEntity != null) {
//        actionShareInNative(shareEntity);
//      }
//    }
//  }
//
//  // xxxInNative 这种方法太多了不好吧，想个好的方式
//
//  /**
//   * 业务方自己实现
//   */
//  protected void actionShareInNative(@NonNull SharePublicEntity shareEntity) {
//    //if (shareEntity != null) {
//    //  UrlSchemeUtils.toShared(this, shareEntity);
//    //}
//  }
//
//  /**
//   * 调用登录
//   */
//  protected void actionLoginInNative(String url) {
//    //Intent intent = new Intent(this, UserLoginActivity.class);
//    //intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
//    //this.startActivity(intent);
//  }
//
//  /**
//   * 设置标题,有标题的子类应该重写此方法
//   */
//  protected void setPageTitleInNative(final String title) {
//    // will be implements by sub-class
//  }
//
//  /**
//   * 根据url跳转本地页面
//   */
//  protected void actionWithUrlInNative(final String actionUrl) {
//    //UrlSchemeUtils.goToTagetActivity(this, actionUrl, sharePublicEntity);
//  }
//
//  /**
//   * 在标题栏右侧添加按钮,,有标题栏的子类应该重写此方法
//   */
//  protected void setRightButtonInNative(List<String> params) {
//    // will be implements by sub-class
//  }
//
//  /**
//   * 在标题栏右侧添加自定义行为的按钮
//   */
//  protected void setRightButton2InNative(List<RightButtonBean> list) {
//    // will be implements by sub-class
//  }
//
//  /**
//   * 和H5的双向通信方法
//   *
//   * @param actionUrl 要跳转的地址
//   * @param functionName 回调到H5的js方法名
//   */
//  protected void callAndBackInNative(String actionUrl, String functionName) {
//    mJsCallBackName = functionName;
//    UrlSchemeUtils.goToTagetActivity(this, actionUrl, null);
//  }
//
//  /**
//   * 关闭当前webview
//   */
//  protected void closeWebInNative(String msg) {
//    finish();
//  }
//}
